﻿using System.Collections.Generic;
using System.Linq;
using FacialClub.Models.Entities;

namespace FacialClub.Models.Interfaces
{
    /// <summary>
    /// Subscription Repository Interface
    /// </summary>
    public interface ISubscriptionRepository
    {
        /// <summary>
        /// Get All Subscription
        /// </summary>
        /// <returns></returns>
        IQueryable<Subscription> FindAllSubscription();

        /// <summary>
        /// Get Subscription By Name
        /// </summary>
        /// <param name="strQuery"></param>
        /// <returns></returns>
        IQueryable<Subscription> FindSubscriptionByName(string strQuery);

        /// <summary>
        /// Get Subscription By Id
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Subscription GetSubscriptionById(int id);

        /// <summary>
        /// Add Subscription in the Database
        /// </summary>
        /// <param name="subscription"></param>
        void Add(Subscription subscription);

        /// <summary>
        /// Delete Subscription from the Database
        /// </summary>
        /// <param name="subscription"></param>
        void Delete(Subscription subscription);

        /// <summary>
        /// Save record in the database
        /// </summary>
        void Save();

        /// <summary>
        /// Return Country and States
        /// </summary>
        /// <returns></returns>
        List<CountryStates> GetCountryStates();

    }
}